//#include <iostream>
//#include <vector>
//#include<algorithm>
//#include<unordered_map>
//using namespace std;
/////////在给定数组nums中选择nums[i]、num[j]、nums[k]三个数之和为0
/////////返回{nums[i]、num[j]、nums[k]} （顺序无关但不能重复）
/////////双指针  注意细节如去重、数组越界、不漏
//vector<vector<int>> threeSum(vector<int>& nums) {
//        int len = nums.size();
//        sort(nums.begin(), nums.end());
//        vector<vector<int>> answer;
//
//        for (int x = 0; x < len - 2;)
//        {
//            if (nums[x] > 0) break;
//            int target = 0 - nums[x];
//            int left = x + 1;
//            int right = len - 1;
//            while (left < right)
//            {
//                int sum = nums[left] + nums[right];
//                if (sum == target)
//                {
//                    answer.push_back({ nums[x],nums[left],nums[right] });
//                    while (left < right && nums[left] == nums[left + 1])
//                    {
//                        left++;
//                    }
//                    left++;
//                    while (left < right && nums[right] == nums[right - 1])
//                    {
//                        right--;
//                    }
//                    right--;
//                }
//                if (sum < target)
//                {
//                    while (left < right && nums[left] == nums[left + 1])
//                    {
//                        left++;
//                    }
//                    left++;
//                }
//                if (sum > target)
//                {
//                    while (left < right && nums[right] == nums[right - 1])
//                    {
//                        right--;
//                    }
//                    right--;
//                }
//            }
//            while (x < len - 2 && nums[x] == nums[x + 1])
//            {
//                x++;
//            }
//            x++;
//        }
//        return answer;
//    }
//
//int main()
//{
//    vector<int> nums = { -1, 0, 1, 2, -1, -4 };
//    vector<vector<int>> result = threeSum(nums);//返回[[-1,-1,2],[-1,0,1]]
//    int len= result.size();
//    for (int i = 0; i < len; i++)
//    {
//        int seclen = result[i].size();
//        for (int j = 0; j < seclen; j++)
//        {
//            cout << result[i][j] << " ";
//        }
//        cout << endl;
//    }
//    return 0;
//}